package cn.signalpha.modules.shop.mapper;

import cn.signalpha.modules.shop.dto.StoreMenuDTO;
import cn.signalpha.modules.shop.entity.SellerMenu;
import cn.signalpha.modules.shop.vo.SellerMenuVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import java.util.List;
import java.util.Map;

/**
 * Mapper 接口
 *
 * @author signalpha
 */
public interface SellerMenuMapper extends BaseMapper<SellerMenu> {

	/**
	 * 懒加载列表
	 */
	List<SellerMenuVO> lazyList(Long parentId, Map<String, Object> param);

	/**
	 * 懒加载菜单列表
	 */
	List<SellerMenuVO> lazyMenuList(Long parentId, Map<String, Object> param);

	/**
	 * 树形结构
	 */
	List<SellerMenuVO> tree();

	/**
	 * 授权树形结构
	 */
	List<SellerMenuVO> grantTree();

	/**
	 * 授权树形结构
	 */
	List<SellerMenuVO> grantTreeByRole(List<Long> roleId);

	/**
	 * 所有菜单
	 */
	List<SellerMenu> allMenu();

	/**
	 * 权限配置菜单
	 */
	List<SellerMenu> roleMenu(List<Long> roleId, Long topMenuId);

	/**
	 * 权限配置菜单
	 */
	List<SellerMenu> roleMenuByRoleId(List<Long> roleId);

	/**
	 * 菜单树形结构
	 */
	List<SellerMenu> routes(List<Long> roleId);

	/**
	 * 按钮树形结构
	 */
	List<SellerMenu> allButtons();

	/**
	 * 按钮树形结构
	 */
	List<SellerMenu> buttons(List<Long> roleId);

	/**
	 * 获取配置的角色权限
	 */
	List<StoreMenuDTO> authRoutes(List<Long> roleIds);

}
